In virtualized computing systems, host machines generally host a plurality of virtual machines. In hosting virtual machines, a host machine may provide a virtual switch that connects virtual machines running on the host to communicate with other virtual machines hosted on the same host machine as well as virtual machines hosted on other hosts. The virtual switch may be configured with internally-maintained forwarding tables that are populated by a control plane for determining how to process and forward ingress packets. In some cases, the virtual switch may be an Open vSwitch (OVS), which is an open-source implementation of a distributed multi-layer virtual switch that provides a switching stack for a hardware virtualization environment (e.g., kernel-based virtual machine (KVM), which is a virtualization solution for Linux that includes a kernel module that provides functionality of a hypervisor in the kernel of Linux). The architecture of OVS includes two major components: a slow path which handles the complexity of a protocol such as OpenFlow and a fast path. The OVS slow path, which maintains a full determination of what actions need to be executed to accurately forward a packet to its next destination, typically resides in the user space of the host machine's operating system. The fast path typically resides in the kernel of the host operating system and acts as a caching layer for efficient packet lookup and forwarding. More specifically, for each ingress packet, the fast path consults a flow table to search for and execute a list of actions associated with the packet. The actions may include forwarding the packet to a particular destination port(s) or modifying the packet etc.
The fast path may be updated from time to time to include new features (e.g., using a microflow cache for its flow table, using two layers of caching for its flow table, etc.). Adding a feature in the fast path conventionally may require coding the feature separately for different operating systems. For example, due to differences in how the operating systems function (e.g., how the operating system processes received packets, how the operating system handles firewalling, etc.), implementing the feature on different operating systems may require different platform-specific code for each operating system. Accordingly, the software development cycle of a new fast path feature may become complex and require detailed platform-specific knowledge.